"""
作者:冯中华
页面:商品管理-添加新商品-商品属性
"""
from Common.Base import Base, open_browser
from time import sleep

admin_login_url = 'http://172.16.11.202:8080/ecshop/admin/index.php'


class GoodsAttribute(Base):
    """制作定位器"""
    cancel_submit_loc = ('css selector', 'div.panel-cross span')  # Ｘ按钮
    ecshop_loc = ('id', 'cloudLogin')  # ECShop定位
    username_loc = ('name', 'username')  # 用户名输入框
    password_loc = ('name', 'password')  # 密码输入框
    login_submit_loc = ('class name', 'btn-a')  # 登录按钮
    menu_frame_loc = ('css selector', 'frame#menu-frame')  # 左侧菜单栏frame
    goods_management_loc = ('class name', 'icon-goods')  # 商品管理
    add_goods_loc = ('css selector', 'a[href*="goods.php?act=add"]')  # 添加新商品
    main_frame_loc = ('id', 'main-frame')  # 主体frame
    goods_name_loc = ('name', 'goods_name')  # 商品名称输入框
    goods_categories_first_loc = ('css selector', 'select[name="cat_id"]>option:nth-of-type(2)')  # 选择商品类别为家用电器
    goods_attribute_loc = ('id', 'properties-tab')  # 商品属性按钮
    goods_type_first_loc = ('css selector', 'select[name="goods_type"] option:nth-of-type(2)')  # 商品类型选择书
    goods_type_list_loc = ('css selector', 'select[name="goods_type"] option:nth-of-type(10)')  # 商品类型选择精品手机

    """商品类型选择精品手机后的页面元素"""

    listing_date_first_loc = (
        'css selector', 'select[name="attr_value_list[]"] option:nth-of-type(2)')  # 上市日期2008年01月
    listing_date_list_loc = (
        'css selector', 'select[name="attr_value_list[]"] option:nth-of-type(25)')  # 上市日期2007年12月
    memory_card_format_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(2) input[name="attr_value_list[]"]')  # 存储卡格式
    memory_capacity_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(3) input[name="attr_value_list[]"]')  # 内存容量
    os_loc = ('css selector', 'table#attrTable tbody tr:nth-of-type(4) input[name="attr_value_list[]"]')  # 操作系统
    k_java_loc = ('css selector', 'table#attrTable tbody tr:nth-of-type(5) input[name="attr_value_list[]"]')  # K-JAVA
    size_volume_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(6) input[name="attr_value_list[]"]')  # 尺寸体积
    screen_color_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(7) select option:nth-of-type(2)')  # 屏幕颜色为1600万
    screen_material_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(8) select option:nth-of-type(2)')  # 屏幕材质为TFT
    screen_resolution_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(9) select option:nth-of-type(2)')  # 屏幕分辨率为320×240像素
    screen_size_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(10) input[name="attr_value_list[]"]')  # 屏幕大小
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(11) input[name="attr_value_list[]"]')  # 中文输入法
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(12) input[name="attr_value_list[]"]')  # 情景模式
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(13) input[name="attr_value_list[]"]')  # 网络链接
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(14) input[name="attr_value_list[]"]')  # 蓝牙接口
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(15) input[name="attr_value_list[]"]')  # 数据线接口
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(16) input[name="attr_value_list[]"]')  # 电子邮件
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(17) input[name="attr_value_list[]"]')  # 办公功能
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(18) input[name="attr_value_list[]"]')  # 数码相机
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(19) input[name="attr_value_list[]"]')  # 像素
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(20) input[name="attr_value_list[]"]')  # 传感器
    # chinese_input_method_loc = (
    #     'css selector', 'table#attrTable tbody tr:nth-of-type(21) input[name="attr_value_list[]"]')  # 变焦模式
    color_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(30) select option:nth-of-type(2)')  # 颜色为黑色
    color_price_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(30) input:nth-of-type(2)')  # 颜色属性价格
    parts_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(31) select option:nth-of-type(2)')  # 配件为线控耳机
    parts_price_loc = (
        'css selector', 'table#attrTable tbody tr:nth-of-type(31) input:nth-of-type(2)')  # 配件属性价格
    submit_loc = ('css selector', 'div.button-div input:nth-of-type(2)')  # 确定按钮
    save_button_loc = ('css selector', 'form#addForm table#table_list tbody tr td input')  # 保存按钮
    input_keyword_loc = ('css selector', 'form[name="searchForm"] input[name="keyword"]')  # 关键字输入框
    search_submit_loc = ('css selector', 'form[name="searchForm"] button')  # 搜索按钮
    trade_name_loc = ('css selector', 'td.first-cell span')  # 搜索得到的商品名称

    """封装操作层"""

    def login(self, username, password):
        """
        登录账号
        @param username:用户名
        @param password:密码
        @return:
        """
        self.click(self.cancel_submit_loc)  # 点击Ｘ按钮
        self.click(self.ecshop_loc)  # 选择Ecshop登录
        self.send_keys(self.username_loc, username)  # 输入用户名
        self.send_keys(self.password_loc, password)  # 输入密码
        self.click(self.login_submit_loc)  # 点击登录

    def into_goods(self):
        """进入商品管理"""
        self.into_frame(self.menu_frame_loc)  # 进入左侧菜单栏frame
        self.click(self.goods_management_loc)  # 商品管理

    def into_add_goods(self):
        """进入添加商品"""
        self.click(self.add_goods_loc)
        self.out_frame()  # 退出入左侧菜单栏frame

    def goods_name(self, goods_name):
        """输入商品名称"""
        self.into_frame(self.main_frame_loc)  # 进入主体frame
        self.send_keys(self.goods_name_loc, goods_name)  # 输入商品名称

    def goods_categories(self):
        """选择商品类别为家用电器"""
        self.click(self.goods_categories_first_loc)

    def into_goods_attribute(self):
        """进入商品属性"""
        self.click(self.goods_attribute_loc)

    def goods_type_select(self):
        """选择商品类型"""
        # self.click(self.goods_type_first_loc)  # 商品类型选择书
        # sleep(3)
        self.click(self.goods_type_list_loc)  # 商品类型选择精品手机

    def listing_date_select(self):
        """选择上市日期"""
        # sleep(3)
        # self.click(self.listing_date_first_loc)  # 上市日期选择2008年01月
        sleep(3)
        self.click(self.listing_date_list_loc)  # 上市日期选择2007年12月

    def memory_card_format(self, memory_card_format):
        """输入存储卡格式"""
        self.send_keys(self.memory_card_format_loc, memory_card_format)

    def memory_capacity(self, memory_capacity):
        """输入内存容量"""
        self.send_keys(self.memory_capacity_loc, memory_capacity)

    def os(self, os):
        """输入操作系统"""
        self.send_keys(self.os_loc, os)

    def k_java(self, k_java):
        """输入K-JAVA"""
        self.send_keys(self.k_java_loc, k_java)

    def size_volume(self, size_volume):
        """输入尺寸体积"""
        self.send_keys(self.size_volume_loc, size_volume)

    def screen_color(self):
        """选择屏幕颜色为1600万"""
        self.click(self.screen_color_loc)

    def screen_material(self):
        """选择屏幕材质为TFT"""
        self.click(self.screen_material_loc)

    def screen_resolution(self):
        """选择屏幕分辨率为320×240像素"""
        self.click(self.screen_resolution_loc)

    def screen_size(self, screen_size):
        """输入屏幕大小"""
        self.send_keys(self.screen_size_loc, screen_size)

    def color(self):
        """选择颜色为黑色"""
        self.click(self.color_loc)

    def color_price(self, color_price):
        """输入颜色属性价格"""
        self.send_keys(self.color_price_loc, color_price)

    def parts(self):
        """选择配件为线控耳机"""
        self.click(self.parts_loc)

    def parts_price(self, parts_price):
        """输入配件属性价格"""
        self.send_keys(self.parts_price_loc, parts_price)

    def submit(self):
        """点击确定按钮"""
        self.click(self.submit_loc)

    def save_button(self):
        """点击保存按钮"""
        self.click(self.save_button_loc)

    def is_add_success(self, text):
        """
        判断新增商品是否成功,如果成功,返回TRUE,反之返回False
        @return:
        """
        self.send_keys(self.input_keyword_loc, text)  # 输入关键字
        self.click(self.search_submit_loc)  # 点击搜索
        return self.is_text_equal_in_element(self.trade_name_loc, text)


if __name__ == '__main__':
    attr = GoodsAttribute(open_browser())  # 打开浏览器
    attr.open_url(admin_login_url)  # 进入登录页面
    attr.login('root', 'root123456')  # 登录
    attr.into_goods()  # 进入商品管理
    attr.into_add_goods()  # 进入添加商品
    attr.goods_name('托马斯回旋加速式托马斯回旋加速炮9')  # 输入商品名称
    attr.goods_categories()  # 选择商品类别为家用电器
    attr.into_goods_attribute()  # 进入商品属性
    attr.goods_type_select()  # 选择商品类型
    attr.listing_date_select()  # 选择上市日期
    attr.memory_card_format('MMC')  # 输入存储卡格式
    attr.memory_capacity('128G')  # 输入内存容量
    attr.os('Harmony')  # 输入操作系统
    attr.k_java('不支持')  # 输入K-JAVA
    attr.size_volume('96×51.4×14.3mm')  # 输入尺寸体积
    attr.screen_color()  # 选择屏幕颜色为1600万
    attr.screen_material()  # 选择屏幕材质为TFT
    attr.screen_resolution()  # 选择屏幕分辨率为320×240像素
    attr.screen_size('32英寸')  # 输入屏幕大小
    # attr.color()  # 选择颜色为黑色
    attr.color_price('1234')  # 输入颜色属性价格
    attr.parts()  # 选择配件为线控耳机
    attr.parts_price('1234')  # 输入配件属性价格
    attr.submit()  # 点击确定按钮
    # attr.save_button()  # 点击保存按钮
    print(attr.is_add_success('托马斯回旋加速式托马斯回旋加速炮9'))
